home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fatted Calf
/
The Fatted Calf.iso
/
Modules
/
BackSpaceModules
/
Source
/
FadingImage
/
FadingImageView.m
< prev
next >
Wrap
Text File
|
1992-06-22
|
2KB
|
102 lines
//
// FadingImageView.m
//
// Implements a fading image screen saver view
//
// Lennart Lovstrand, August 1991.
// small modifications by sam 910904
//
// You may freely copy, distribute, and reuse the code in this example.
// NeXT disclaims any warranty of any kind, expressed or implied, as to its
// fitness for any particular use.
#import "FadingImageView.h"
#import "Thinker.h"
#import <appkit/NXImage.h>
#import <dpsclient/wraps.h>
#import <libc.h>
#import <math.h>
//#import <appkit/Application.h>
#define STEPTIME 50 /* time between fades (millisec) */
#define WAITTIME 6000 /* wait before fading (millisec) */
#define FADEDELTA 0.05
@implementation FadingImageView
- drawSelf:(const NXRect *)rects :(int)rectCount
{
NXPoint p;
if (!rects || !rectCount) return self;
[super drawSelf:rects :rectCount];
p.x = floor(imageRect.origin.x);
p.y = floor(imageRect.origin.y);
[image dissolve: delta toPoint: &p];
return self;
}
- oneStep
{
if (![self timePassed: steptime]) return self;
switch (state)
{
case FV_FadeIn:
delta += FADEDELTA;
if (delta >= 1.0)
{
delta = 1.0;
state = FV_FadeOut;
steptime = WAITTIME;
}
PSsetgray(0.0);
NXRectFill(&imageRect);
[image dissolve: delta toPoint: &imageRect.origin];
break;
case FV_FadeOut:
delta -= FADEDELTA;
if (delta <= 0.0)
{
delta = 0.0;
state = FV_Move;
}
PSsetgray(0.0);
NXRectFill(&imageRect);
[image dissolve: delta toPoint: &imageRect.origin];
steptime = STEPTIME;
break;
case FV_Move:
imageRect.origin.x = floor(randBetween(0, maxCoord.x));
imageRect.origin.y = floor(randBetween(0, maxCoord.y));
state = FV_FadeIn;
steptime = STEPTIME;
break;
}
return self;
}
- initFrame:(NXRect *)frameRect
{
steptime = STEPTIME;
state = FV_Move;
return [super initFrame:frameRect];
}
- inspector:sender
{
return [sender commonImageInspector];
}
@end